package study

import "fmt"

// 流程控制

func ProcessControl() {
	// --------------------------------------------------- 三大流程控制 ---------------------------------------------------
	// 1.顺序控制
	//  程序按编写顺序执行(默认执行顺序)
	// go 中定义变量时, 采用合法的前向引用 (即: 变量的声明一定要在使用之前)
	a := 12                 // ↓
	fmt.Printf("a=%v\n", a) // ↓

	// 2.分支控制
	//   让程序有选择的执行
	//   1.单分支
	//   go 支持在 if 中使用 := 定义一个变量
	// if age := 20; (age > 18) { // if 的条件可以带括号, 也可以不带
	if age := 20; age > 18 {
		fmt.Printf("进入了 if 单分支\n")
	}
	//   2.双分支
	height1 := 0.0
	fmt.Println("请输入身高: ")
	fmt.Scanln(&height1)
	fmt.Printf("身高: %v\n", height1)
	// if (height1 < 120) { // if 的条件可以带括号, 也可以不带
	if height1 < 120 {
		fmt.Printf("height < 120\n")
	} else {
		fmt.Printf("height > 120\n")
	}
	//   3.多分支
	height2 := 0.0
	fmt.Println("请输入身高: ")
	fmt.Scanln(&height2)
	fmt.Printf("身高: %v\n", height2)
	// if ... else if ... else if ... else ...
	if height2 < 120 {
		fmt.Printf("height < 120\n")
	} else if height2 < 150 {
		fmt.Printf("120 < height < 150\n")
	} else {
		fmt.Printf("height > 150\n")
	}
	num := 0
	fmt.Println("输入一个数字:")
	fmt.Scanf("%v", &num)
	//  switch ... case ...
	switch num {
	case 1:
		fmt.Printf("1\n")
		fmt.Printf("1\n")
	case 2:
		fmt.Printf("2\n")
	default:
		fmt.Printf("default\n")
	}

	// 3.循环控制
}
